package LeetCode75;

import java.util.Arrays;
import java.util.HashSet;

/**
 * 1207. 独一无二的出现次数
 * 给你一个整数数组 arr，请你帮忙统计数组中每个数的出现次数。
 *
 * 如果每个数的出现次数都是独一无二的，就返回 true；否则返回 false。
 *
 *
 *
 * 示例 1：
 *
 * 输入：arr = [1,2,2,1,1,3]
 * 输出：true
 * 解释：在该数组中，1 出现了 3 次，2 出现了 2 次，3 只出现了 1 次。没有两个数的出现次数相同。
 * 示例 2：
 *
 * 输入：arr = [1,2]
 * 输出：false
 * 示例 3：
 *
 * 输入：arr = [-3,0,1,-3,1,1,1,-3,10,0]
 * 输出：true
 *
 *
 * 提示：
 *
 * 1 <= arr.length <= 1000
 * -1000 <= arr[i] <= 1000
 */
public class T1207_独一无二的出现次数 {

    //排序 遍历 统计每个数出现的次数 放入set 中 判断次数是否相同
    public static boolean uniqueOccurrences(int[] arr) {

        int temp = -1001;
        int numCount = -1;
        HashSet<Integer> set = new HashSet<>();
        Arrays.sort(arr);
        for (int i = 0; i < arr.length; i++){
            if (arr[i] == temp) {
                numCount++;
            } else {
                //将缓存写入
                if (set.contains(numCount)) {
                    return false;
                } else {
                    set.add(numCount);
                    temp = arr[i];
                    numCount = 1;
                }
            }


        }
        //判断最后一个数出现的次数 因为边界问题需要单独处理最后一个数
        return !set.contains(numCount);
    }

    public static void main(String[] args) {
        uniqueOccurrences(new int[]{1,2,2,1,1,3});
    }
}
